﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using vudu.Logica.Clases;

namespace vudu.EnlaceDatos.SqlServer
{
    public class SqlServerPractica
    {
       
        public Practica ConsultarDatosPractica(int idPractica)
        {
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            miConexion.AbrirConexionBd();
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = "[DBO].[ConsultarDatosPractica]";
            command.CommandTimeout = 10;
            //variables del stored procedure de sql server.
            command.Parameters.AddWithValue("@idPractica", idPractica);
            command.Parameters["@idPractica"].Direction = ParameterDirection.Input;
            try
            {

                SqlDataReader reader = command.ExecuteReader();
                Practica practica = new Practica();
                Profesor profe = new Profesor();
                while (reader.Read())
                {
                    
                    practica.IdPractica = reader.GetInt32(0);
                    practica.NombrePractica = reader.GetString(1);
                    practica.NumeroSeccion = reader.GetInt32(2);
                    profe.Nombre = reader.GetString(3);
                    profe.Apellido = reader.GetString(4);
                     
                }

               
                // Materia mat = new Materia();
                // mat = materia;
                reader.Close();
                practica.profesor = profe;
                return practica;
            }
            catch (SqlException ex)
            {
                return null;
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }
        }

        public List<HorarioDeClase> ConsultarHorasPracticas(int idpractica)
        {
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            SqlDataReader reader = null;

            try
            { 
                List<HorarioDeClase> listahorario = new List<HorarioDeClase>();
                //se abre la conexion a la base de datos
                miConexion.AbrirConexionBd();
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "[dbo].[ConsultarHorasPractica]";
                command.CommandTimeout = 10;
                //variables del stored procedure de sql server.
                command.Parameters.AddWithValue("@idpractica", idpractica);
                command.Parameters["@idpractica"].Direction = ParameterDirection.Input;
                //se carga la informacion desde la base de datos
                reader = command.ExecuteReader();

                Salon salonDeClase = new Salon();
                while (reader.Read())
                {
                    HorarioDeClase horario = new HorarioDeClase();
                    horario.Dia = reader.GetString(0);
                    horario.HoraInicio = reader.GetDateTime(1);
                    horario.HoraFin = reader.GetDateTime(2);
                    salonDeClase.Nombre = reader.GetString(3);
                    salonDeClase.Tipo = reader.GetString(4);
                    horario.SalonDeClase = salonDeClase;
                    listahorario.Add(horario);
                    
                }
                
                return listahorario;

            }
            catch (SqlException)
            {
                return null;
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.StackTrace);
                System.Console.ReadLine();
                return null;
            }
            finally
            {
                if (reader != null)
                    reader.Close();
                miConexion.CerrarConexionBd();
            }

        }

        public Salon ConsultarSalonIndividual(int idSalon)
        {
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            SqlDataReader reader = null;
            try
            {
                //se abre la conexion a la base de datos
                miConexion.AbrirConexionBd();
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "[dbo].[ConsultarSalonPractica]";
                command.CommandTimeout = 10;
                //variables del stored procedure de sql server.
                command.Parameters.AddWithValue("@idSalon", idSalon);
                command.Parameters["@idSalon"].Direction = ParameterDirection.Input;
                //se carga la informacion desde la base de datos
                Salon salon = new Salon();
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    salon.NumeroSalon = reader.GetInt32(0);
                    salon.Tipo = reader.GetString(1);
                    salon.Nombre = reader.GetString(2);
                    salon.Edificio = reader.GetString(3);
                    salon.Capacidad = reader.GetInt32(4);
                    salon.Status = reader.GetInt32(5);
                }
                return salon;
            }
            catch (SqlException)
            {
                return null;
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.StackTrace);
                System.Console.ReadLine();
                return null;
            }
            finally
            {
                if (reader != null)
                    reader.Close();
                miConexion.CerrarConexionBd();
            }

        }

        public List<HorarioDeClase> ConsultarHorario(String dia)
        {
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            SqlDataReader reader = null;

            List<HorarioDeClase> listahorario = new List<HorarioDeClase>();

            try
            {
                //se abre la conexion a la base de datos
                miConexion.AbrirConexionBd();
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "[dbo].[ConsultarHorarioPractica]";
                command.CommandTimeout = 10;
                //variables del stored procedure de sql server.
                command.Parameters.AddWithValue("@dia", dia);
                command.Parameters["@dia"].Direction = ParameterDirection.Input;
                //se carga la informacion desde la base de datos
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    System.Console.WriteLine("entro");
                    HorarioDeClase horario = new HorarioDeClase();
                    horario.IdHorarioClase = reader.GetInt32(0);
                    horario.Dia = reader.GetString(1);
                    horario.HoraInicio = reader.GetDateTime(2);
                    horario.HoraFin = reader.GetDateTime(3);
                    horario.SalonDeClase.NumeroSalon = reader.GetInt32(4);
                    listahorario.Add(horario);
                }
                return listahorario;

            }
            catch (SqlException)
            {
                System.Console.WriteLine("sqlexception");
                return null;
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.StackTrace);
                System.Console.ReadLine();
                return null;
            }
            finally
            {
                if (reader != null)
                    reader.Close();
                miConexion.CerrarConexionBd();
            }



        }

        public Profesor ConsultarProfesorIndividual(int idProfesor)
        {
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            miConexion.AbrirConexionBd();
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = "[dbo].[ConsultarProfesor]";
            command.CommandTimeout = 10;
            //variables del stored procedure de sql server.
            command.Parameters.AddWithValue("@id_Profesor", idProfesor);
            command.Parameters["@id_Profesor"].Direction = ParameterDirection.Input;
            try
            {

                SqlDataReader reader = command.ExecuteReader();
                Profesor profesor = new Profesor();
                while (reader.Read())
                {
                    profesor.Nombre = reader.GetString(0);
                    profesor.Apellido = reader.GetString(1);
                }
                // Materia mat = new Materia();
                // mat = materia;
                reader.Close();

                return profesor;
            }
            catch (SqlException ex)
            {
                return null;
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }

        }

        public List<Salon> ConsultarSalones(int idEscuela)
        {
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            SqlDataReader reader = null;
            List<Salon> salones = new List<Salon>();
            try
            {
                miConexion.AbrirConexionBd(); //se abre una conexion a base de datos

                // se completa el objeto comando, con la informacion de la conexion , variables, y nombre del stored procedure.
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = CommandType.StoredProcedure;
                command.CommandText = "[dbo].[ConsultarSalonesPractica]";
                command.CommandTimeout = 10;

                //se ejecuta el comando
                command.Parameters.AddWithValue("@idEscuela", idEscuela);
                command.Parameters["@idEscuela"].Direction = ParameterDirection.Input;
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    Salon salon = new Salon();

                    salon.NumeroSalon = (int)reader[0];
                    salon.Tipo = (string)reader[1];
                    salon.Nombre = (string)reader[2];
                    salon.Edificio = (string)reader[3];
                    salon.Capacidad = (int)reader[4];
                    salon.Status = (int)reader[5];
                    salones.Add(salon);
                }
                return salones;

            }
            catch (SqlException)
            {
                return null;
            }
            catch (Exception e)
            {

                System.Console.WriteLine(e.StackTrace);
                System.Console.ReadLine();
                return null;
            }
            finally
            {
                if (reader != null)
                    reader.Close();

                miConexion.CerrarConexionBd();
            }

        }
        //aGregarle idEscuela en ()
        public List<Profesor> ConsultarProfesor(int idEscuela)
        {
            Conexion miConexion = new Conexion();
            List<Profesor> lista = new List<Profesor>();
            //int idEscuela = 1;
            SqlCommand command = new SqlCommand();
            miConexion.AbrirConexionBd();
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = "[dbo].[ConsultarProfesoresPractica]";
            command.CommandTimeout = 10;
            //variables del stored procedure de sql server.
            command.Parameters.AddWithValue("@idEscuela", idEscuela);
            command.Parameters["@idEscuela"].Direction = ParameterDirection.Input;
            try
            {

                SqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    Profesor Profesor = new Profesor();
                    Profesor.Cedula = reader.GetInt32(0);
                    Profesor.Nombre = reader.GetString(1);
                    Profesor.Apellido = reader.GetString(2);
                    Profesor.Estatus = reader.GetString(3);
                    lista.Add(Profesor);

                }
                reader.Close();

                return lista;
            }
            catch (SqlException ex)
            {
                return null;
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.StackTrace);
                System.Console.ReadLine();
                return null;
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }
        }

        public int UltimoIdPractica()
        {

            Conexion miConexion = new Conexion();
            int id_Practica = 1;
            //int idEscuela = 1;
            SqlCommand command = new SqlCommand();
            miConexion.AbrirConexionBd();
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = "[dbo].[UltimoIdPractica]";
            command.CommandTimeout = 10;
            //variables del stored procedure de sql server.
            SqlDataReader reader = command.ExecuteReader();
            if (reader.HasRows == false)
            {
                return id_Practica;
            }
            else
            {

                while (reader.Read())
                {
                    int id_practiultimo = 0;
                    id_practiultimo = reader.GetInt32(0);
                    id_Practica = id_practiultimo;
                }


                return id_Practica;
            }


        }

        public bool AgregarPractica(Practica practica, int idSeccionMateria)
        {
            try
            {
                Conexion miConexion = new Conexion();
                SqlCommand command = new SqlCommand();//[dbo].[AgregarPractica]
                miConexion.AbrirConexionBd();
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "[dbo].[AgregarPractica]";
                command.CommandTimeout = 10;
                //variables del stored procedure de sql server.
                command.Parameters.AddWithValue("@IdPractica", practica.IdPractica);
                command.Parameters["@IdPractica"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@NumeroSeccion", practica.NumeroSeccion);
                command.Parameters["@NumeroSeccion"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@NombrePractica", practica.NombrePractica);
                command.Parameters["@NombrePractica"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@idSeccionMateria", idSeccionMateria);
                command.Parameters["@idSeccionMateria"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@statusPractica", practica.statusPractica);
                command.Parameters["@statusPractica"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@Cedula", practica.profesor.Cedula);
                command.Parameters["@Cedula"].Direction = ParameterDirection.Input;
                command.ExecuteReader();
                /* 
                comando.Connection = miConexion.ObjetoConexion();*/




                return true;
            }
            catch (SqlException ex)
            {
                return false;
            }
            catch (Exception ex)
            {
                return false;
            }



        }

        public bool AgregarHorarioClase(HorarioDeClase horarioDeClase, int idPractica)
        {
            try
            {
                Conexion miConexion = new Conexion();
                SqlCommand command = new SqlCommand();//[dbo].[AgregarPractica]
                miConexion.AbrirConexionBd();
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "[dbo].[AgregarHorarioClasePractica]";
                command.CommandTimeout = 10;
                //variables del stored procedure de sql server.

                command.Parameters.AddWithValue("@Dia", horarioDeClase.Dia);
                command.Parameters["@Dia"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@HoraInicio", horarioDeClase.HoraInicio);
                command.Parameters["@HoraInicio"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@HoraFin", horarioDeClase.HoraFin);
                command.Parameters["@HoraFin"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@NumeroSalon", horarioDeClase.SalonDeClase.NumeroSalon);
                command.Parameters["@NumeroSalon"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@idPractica", idPractica);
                command.Parameters["@idPractica"].Direction = ParameterDirection.Input;
                command.ExecuteReader();
                /* 
                comando.Connection = miConexion.ObjetoConexion();*/




                return true;
            }
            catch (SqlException ex)
            {
                return false;
            }
            catch (Exception ex)
            {
                return false;
            }

        }

        public List<SeccionMateria> ConsultarSeccionMateria(int idEscuela)
        {
            Conexion miConexion = new Conexion();
            List<SeccionMateria> lista = new List<SeccionMateria>();
            // int idEscuela = 1;
            SqlCommand command = new SqlCommand();
            miConexion.AbrirConexionBd();
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = "[DBO].[ConsultarSeccionMateriasPractica]";
            command.CommandTimeout = 10;
            //variables del stored procedure de sql server.
            
            command.Parameters.AddWithValue("@idEscuela", idEscuela);
            command.Parameters["@idEscuela"].Direction = ParameterDirection.Input;
            command.Parameters.AddWithValue("@fecha", System.DateTime.Now);
            command.Parameters["@fecha"].Direction = ParameterDirection.Input;
            try
            {

                SqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    SeccionMateria seccion = new SeccionMateria();
                    seccion.IdSeccionMateria = reader.GetInt32(0);
                    seccion.Codigo = reader.GetInt32(1);

                    lista.Add(seccion);
                }
                reader.Close();

                return lista;
            }
            catch (SqlException ex)
            {
                return null;
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.StackTrace);
                System.Console.ReadLine();
                return null;
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }
        }

        public Materia ConsultarMateriaPractica(int idSeccionMateria)
        {
            Conexion miConexion = new Conexion();



            SqlCommand command = new SqlCommand();
            miConexion.AbrirConexionBd();
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = "[DBO].[ConsultarMateriaPractica]";
            command.CommandTimeout = 10;
            //variables del stored procedure de sql server.
            command.Parameters.AddWithValue("@idSeccionMateria", idSeccionMateria);
            command.Parameters["@idSeccionMateria"].Direction = ParameterDirection.Input;
            try
            {

                SqlDataReader reader = command.ExecuteReader();
                Materia materia = new Materia();
                while (reader.Read())
                {
                    materia.Codigo = reader.GetInt32(0);
                    materia.Nombre = reader.GetString(1);
                    materia.HorasTeoria = reader.GetInt32(2);
                    materia.HorasPractica = reader.GetInt32(3);
                    materia.Descripcion = reader.GetString(4);
                    materia.Estatus = reader.GetString(5);
                }
                // Materia mat = new Materia();
                // mat = materia;
                reader.Close();

                return materia;
            }
            catch (SqlException ex)
            {
                return null;
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }
        }

        public List<Practica> ConsultarNombrePractica(int idSeccionMateria)
        {
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            miConexion.AbrirConexionBd();
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = "[DBO].[ConsultarNombrePractica]";
            command.CommandTimeout = 10;
            //variables del stored procedure de sql server.
            command.Parameters.AddWithValue("@idSeccionMateria", idSeccionMateria);
            command.Parameters["@idSeccionMateria"].Direction = ParameterDirection.Input;
            try
            {
                List<Practica> listaPractica = new List<Practica>();
                SqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    Practica practica = new Practica();
                    practica.IdPractica = reader.GetInt32(0);
                    practica.NombrePractica = reader.GetString(1);
                    practica.NumeroSeccion = reader.GetInt32(2);
                    listaPractica.Add(practica);

                }
                reader.Close();

                return listaPractica;
            }
            catch (SqlException ex)
            {
                return null;
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }
        }

        public bool VerificarNombrePractica(String nombrePractica, int numeroSeccionMateria)
        {
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            miConexion.AbrirConexionBd();
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = "[dbo].[ValidarNombrePractica]";
            command.CommandTimeout = 10;
            //variables del stored procedure de sql server.
            command.Parameters.AddWithValue("@seccionmateria", numeroSeccionMateria);
            command.Parameters["@seccionmateria"].Direction = ParameterDirection.Input;
            command.Parameters.AddWithValue("@nombrePractica", nombrePractica);
            command.Parameters["@nombrePractica"].Direction = ParameterDirection.Input;



            SqlDataReader reader = command.ExecuteReader();

            if (reader.HasRows == false)
            {
                return false;
            }
            else { return true; }




        }

        public bool VerificarSeccionPractica(int seccionPractica, int numeroSeccionMateria)
        {
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            miConexion.AbrirConexionBd();
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = "[dbo].[ValidarSeccionPractica]";
            command.CommandTimeout = 10;
            //variables del stored procedure de sql server.
            command.Parameters.AddWithValue("@seccionmateria", numeroSeccionMateria);
            command.Parameters["@seccionmateria"].Direction = ParameterDirection.Input;
            command.Parameters.AddWithValue("@numeroSeccion", seccionPractica);
            command.Parameters["@numeroSeccion"].Direction = ParameterDirection.Input;



            SqlDataReader reader = command.ExecuteReader();

            if (reader.HasRows == false)
            {
                return false;
            }
            else { return true; }

        }


        public bool EliminarPractica(int idPractica)
        {
            //se instancia un objeto de tipo conexion y sqlCommand
            //estos se utilizan para acceder a base de datos y ejecutar el stored procedure en sql server
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            try
            {
                //se abre una conexion a base de datos
                miConexion.AbrirConexionBd();
                // se completa el objeto comando, con la informacion de la conexion , variables, y nombre del stored procedure.
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "[dbo].[EliminarPractica]";
                command.CommandTimeout = 10;
                //variables del stored procedure de sql server.
                command.Parameters.AddWithValue("@idPractica", idPractica);
                command.Parameters["@idPractica"].Direction = ParameterDirection.Input;
                //se ejecuta el comando
                command.ExecuteReader();
                return true;
            }
            catch (SqlException)
            {
                return false;
            }
            catch (Exception e)
            {
                return false;
            }
            //se cierra la conexion independientemente de que se haya detectado o no una excepcion.
            finally
            {
                miConexion.CerrarConexionBd();
            }
        }

        public bool ModificarProfesor(int idProfesor, int idPractica)
        {
            //se instancia un objeto de tipo conexion y sqlCommand
            //estos se utilizan para acceder a base de datos y ejecutar el stored procedure en sql server
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            try
            {
                //se abre una conexion a base de datos
                miConexion.AbrirConexionBd();
                // se completa el objeto comando, con la informacion de la conexion , variables, y nombre del stored procedure.
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "[dbo].[ModificarProfesorPractica]";
                command.CommandTimeout = 10;
                //variables del stored procedure de sql server.
                command.Parameters.AddWithValue("@idProfesor", idProfesor);
                command.Parameters["@idProfesor"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@idPractica", idPractica);
                command.Parameters["@idPractica"].Direction = ParameterDirection.Input;

                //se ejecuta el comando
                command.ExecuteReader();
                return true;
            }
            catch (SqlException)
            {
                return false;
            }
            catch (Exception e)
            {
                return false;
            }
            //se cierra la conexion independientemente de que se haya detectado o no una excepcion.
            finally
            {
                miConexion.CerrarConexionBd();
            }
        }

        public bool ModificarSalon(int idPractica, string dia, int salon)
        {
            //se instancia un objeto de tipo conexion y sqlCommand
            //estos se utilizan para acceder a base de datos y ejecutar el stored procedure en sql server
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            try
            {
                //se abre una conexion a base de datos
                miConexion.AbrirConexionBd();
                // se completa el objeto comando, con la informacion de la conexion , variables, y nombre del stored procedure.
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "[dbo].[ModificarSalonPractica]";
                command.CommandTimeout = 10;
                //variables del stored procedure de sql server.
                command.Parameters.AddWithValue("@idsalon", salon);
                command.Parameters["@idsalon"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@idPractica", idPractica);
                command.Parameters["@idPractica"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@dia", dia);
                command.Parameters["@dia"].Direction = ParameterDirection.Input;

                //se ejecuta el comando
                command.ExecuteReader();
                return true;
            }
            catch (SqlException)
            {
                return false;
            }
            catch (Exception e)
            {
                return false;
            }
            //se cierra la conexion independientemente de que se haya detectado o no una excepcion.
            finally
            {
                miConexion.CerrarConexionBd();
            }
        }

        public bool ModificarHorarioPractica(DateTime horaInicio,DateTime horaFin,string dia,int idPractica)
        {
            //se instancia un objeto de tipo conexion y sqlCommand
            //estos se utilizan para acceder a base de datos y ejecutar el stored procedure en sql server
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            try
            {
                //se abre una conexion a base de datos
                miConexion.AbrirConexionBd();
                // se completa el objeto comando, con la informacion de la conexion , variables, y nombre del stored procedure.
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "[dbo].[ModificarHorarioPractica]";
                command.CommandTimeout = 10;
                //variables del stored procedure de sql server.
                command.Parameters.AddWithValue("@idPractica", idPractica);
                command.Parameters["@idPractica"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@horaInicio", horaInicio);
                command.Parameters["@horaInicio"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@horaFin", horaFin);
                command.Parameters["@horaFin"].Direction = ParameterDirection.Input;
                command.Parameters.AddWithValue("@dia", dia);
                command.Parameters["@dia"].Direction = ParameterDirection.Input;


                //se ejecuta el comando
                command.ExecuteReader();
                return true;
            }
            catch (SqlException)
            {
                return false;
            }
            catch (Exception e)
            {
                return false;
            }
            //se cierra la conexion independientemente de que se haya detectado o no una excepcion.
            finally
            {
                miConexion.CerrarConexionBd();
            }
        }



 



    }
}